/**
一.
  1. 多态 继承 封装
  2. this
  3 .protected，public，private，default
  4.静态变量
  5.private
 二.
  对 对 错 对 对
 三.
 1.D
 2.ABC
 3.C
 4.D
 5.ABD
四.
 1.构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。
   在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用 return
   语句返回一个值。
 2.
 必须和类名相同  可以有两个构造方法一个有参一个无参   不能用final static synchronized abstract 修饰
 3.继承  封装 多态
 */
import java.util.Scanner;

public class zy2 {
    public static void main(String[] args) {
        show();
        show3((a)->{ return sum(a); });
    }


    public static long sum(long a){
        if(a==0)return 0;
        if(a==1||a==2)return 1;
        return sum(a-1)+sum(a-2);
    }


    private static void show() {
        Demo3 demo3=new Demo3("梁某",88);
        String name = demo3.getName();
        int chenji = demo3.getChenji();
        System.out.println("姓名: "+name +" "+"成绩: "+chenji);
    }
    public static void show3(Demo1 demo1){
        Scanner scanner=new Scanner(System.in);
        int set=scanner.nextInt();
        System.out.println(demo1.sum(set));

    }
}


interface  Demo1 {
    long sum(long a);
}


 class Demo3 {
    private String name;
    private int chenji;

    public Demo3() {
    }

    public Demo3(String name, int chenji) {
        this.name = name;
        this.chenji = chenji;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getChenji() {
        return chenji;
    }

    public void setChenji(int chenji) {
        this.chenji = chenji;
    }

    @Override
    public String toString() {
        return "Demo3{" +
                "name='" + name + '\'' +
                ", chenji=" + chenji +
                '}';
    }
}

